package com.bbva.kyfb.kyfbdto.firmas.fachada.v01;

import java.io.Serializable;

import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.xml.bind.annotation.XmlRootElement;

import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

/**
 * Tipo de dato que representa el filtro de busqueda
 * para conocer los objetos firmables por una aplicacion y referencia
 * determinada.
 *
 * @author xe35008
 * @version
 */
@XmlRootElement
public class InfoReferenceRequest implements Serializable{
	
	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 1L;


	/** identificador de la aplicacion invocante. */
	private String sCodOrigen;
	
	/** Pais asociado a la referencia. */
	private String sPais;
	
	/** Referencia. */
	private String sReferencia;
	
	/** Canal asociado a la referencia. */
	private String sCanal;
	
	/** Banco interno asociado a la referencia. */
	private String sBancoInterno;
	
	/** Check para conocer si se tiene o no una referencia asociada. */
	private String sTieneReferenciaRelacionada;
	
	
	/**
	 * Instantiates a new info reference request.
	 */
	public InfoReferenceRequest() {}


	/**
	 * Gets the s cod origen.
	 *
	 * @return the sCodOrigen
	 */
	@NotEmpty
	@Length(min=4,max=4)
	//@Digits(fraction = 0, integer = 4)
	public String getsCodOrigen() {
		return sCodOrigen;
	}


	/**
	 * Sets the s cod origen.
	 *
	 * @param sCodOrigen the sCodOrigen to set
	 */
	public void setsCodOrigen(String sCodOrigen) {
		this.sCodOrigen = sCodOrigen;
	}


	/**
	 * Gets the s pais.
	 *
	 * @return the sPais
	 */
	@Pattern(regexp="\\p{Upper}{2}")
	public String getsPais() {
		return sPais;
	}


	/**
	 * Sets the s pais.
	 *
	 * @param sPais the sPais to set
	 */
	public void setsPais(String sPais) {
		this.sPais = sPais;
	}


	/**
	 * Gets the s referencia.
	 *
	 * @return the sReferencia
	 */
	@NotNull
	@NotEmpty
	@Length(min=8,max=8)
	@Digits(fraction=0,integer=8)
	public String getsReferencia() {
		return sReferencia;
	}


	/**
	 * Sets the s referencia.
	 *
	 * @param sReferencia the sReferencia to set
	 */
	public void setsReferencia(String sReferencia) {
		this.sReferencia = sReferencia;
	}


	/**
	 * Gets the s canal.
	 *
	 * @return the sCanal
	 */
	@NotNull
	@NotEmpty
	@Length(min=4,max=4)
	public String getsCanal() {
		return sCanal;
	}


	/**
	 * Sets the s canal.
	 *
	 * @param sCanal the sCanal to set
	 */
	public void setsCanal(String sCanal) {
		this.sCanal = sCanal;
	}


	/**
	 * Gets the s banco interno.
	 *
	 * @return the sBancoInterno
	 */
	@NotNull
	@NotEmpty
	@Length(min=4,max=4)
	@Digits(fraction = 0, integer = 4)
	public String getsBancoInterno() {
		return sBancoInterno;
	}


	/**
	 * Sets the s banco interno.
	 *
	 * @param sBancoInterno the sBancoInterno to set
	 */
	public void setsBancoInterno(String sBancoInterno) {
		this.sBancoInterno = sBancoInterno;
	}


	/**
	 * Gets the s tiene referencia relacionada.
	 *
	 * @return the sTieneReferenciaRelacionada
	 */
	@NotNull
	@NotEmpty
	@Pattern(regexp="S|N")
	public String getsTieneReferenciaRelacionada() {
		return sTieneReferenciaRelacionada;
	}


	/**
	 * Sets the s tiene referencia relacionada.
	 *
	 * @param sTieneReferenciaRelacionada the sTieneReferenciaRelacionada to set
	 */
	public void setsTieneReferenciaRelacionada(String sTieneReferenciaRelacionada) {
		this.sTieneReferenciaRelacionada = sTieneReferenciaRelacionada;
	}


	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "InfoReferenceRequest [sCodOrigen=" + sCodOrigen + ", sPais="
				+ sPais + ", sReferencia=" + sReferencia + ", sCanal=" + sCanal
				+ ", sBancoInterno=" + sBancoInterno
				+ ", sTieneReferenciaRelacionada="
				+ sTieneReferenciaRelacionada + "]";
	}
	
}
